var menuBox = null;
var waitBox = null;

$(function(){
	// alert("Hi from user-menu");
	menuBox = $("#menuBox");
	waitBox = $("#waitBox");
	waitBox.hide();
	if(actor_id) initPopupUserMenu();
});

function initPopupUserMenu(box)
{
	if(box == undefined)
	{
		$(".its_user").unbind();
		$(".its_user").bind("click", clickOnFace);
	}
	else
	{
		$(".its_user", box).unbind();
		$(".its_user", box).bind("click", clickOnFace);
	}
}

function clickOnFace(e)
{
	// alert(var_dump(this));
	popupUserMenu(e, this.name.substr(5), page_type);
	return false;
}

function popupUserMenu(e, user_id, page_type)
{
	if(actor_id == null)
		window.location = root_url + '/' + user_id + '/users/';
	
	var clsName = (actor_id == user_id) ? "thickMenu" : "thinMenu";
	menuBox.attr("class", clsName);
	
	$("li", menuBox).remove();
	
	if(actor_id != user_id)
	{
		if(actor_id)
		{
			var i = inArray(user_id, users_wm);
			if(i < 0)
				menuBox.append('<li><a href="#" class="ajax" name="insWatch-'+user_id+'">Следить</a></li>');
			else
				menuBox.append('<li><a href="#" class="ajax" name="delWatch-'+user_id+'">Не следить</a></li>');
	
			i = inArray(user_id, users_fm);
			if(i < 0)
				menuBox.append('<li><a href="#" class="ajax" name="insFriend-'+user_id+'">Доверять</a></li>');
			else
				menuBox.append('<li><a href="#" class="ajax" name="delFriend-'+user_id+'">Не доверять</a></li>');
			
			menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/messages">Переписка</a></li>');
			
			// menuBox.append('<li class="divider"></li>');
			menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans">Планы</a></li>');
		}
		else
		{
			menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans">Статистика</a></li>');
		}
	}
	else
	{
		menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans/all">Планы всех</a></li>');
		menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans/watch">Планы тех, за кем слежу</a></li>');
		menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans/share">Планы с моим участием</a></li>');
		menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/plans/own">Мои планы</a></li>');
		// menuBox.append('<li class="divider"></li>');
	}

	menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/users">Отношения</a></li>');
	
	if(actor_id == user_id)
	{
		menuBox.append('<li><a href="'+root_url+'/'+ user_id +'/profile">Профиль</a></li>');
	}

	$("li a.ajax", menuBox).bind("click", updateUserLinks);
	
	showMenuBox(e.pageX, e.pageY);

	var x = e.pageX;
	var w = $(window).width();
	var dx = (e.pageX + $(menuBox).width() + 10) - w;
	if(dx > 0) showMenuBox(e.pageX - dx, e.pageY);
}

function updateUserLinks(e)
{
	hideMenuBox();
	showWaitBox(e.pageX, e.pageY);
	
	var act = this.name.substr(0, 3);
	var obj = this.name.substr(3).toUpperCase();
	var parts = obj.split('-');
	var link_type = parts[0].substr(0,1);
	var uid = parts[1];

	var pack = new RequestFactory();
	pack.CreateRequest('user-link', act, page_type, '')
		.CreateSection('data', 'link_type', link_type)
		.CreateSection('data', 'user_id', uid);

	$.ajax({
		type: "POST",
		url: root_url+ "/aj.php",
		async: true,
		data: { xml: pack.toString() },
		dataType: "xml",
		error: function(XMLHttpRequest, textStatus, errorThrown){
			alert(var_dump(XMLHttpRequest));
		},
		// и после успешного приема - вставляем полученный html
		success: function(xml){
			// alert("xml: "+ xml);
			
			var ans = jQuery(xml).find("ans").eq(0);
			var res = jQuery(ans).attr('result');
			if(res)
				if(res.toUpperCase() == 'OK')
				{
					var lt  = ans.attr('link_type');
					var act = ans.attr('act');
					var uid = ans.attr('user_id');
					var arr = (lt == 'W') ? users_wm : users_fm;
					changeArray(arr, uid, act);
				}
				
			hideWaitBox();
			// перегрузка страницы отношений, если пользователь смотрит сам себя
			// т.к. в этом случае содержимое страницы меняется
			// alert('user_id =['+user_id+'] actor_id=['+actor_id+']')
			if((page_type == 'users') && (user_id == actor_id))
				location.reload();
		}
	});

	return false;
}

function changeArray(arr, uid, act)
{
	var i = inArray(uid, arr);
	if(act == 'ins')
	{
		if(i < 0)
			arr.push(uid);
	}
	else
	{
		if(i >= 0)
			arr.splice(i, 1);
	}
}

function inArray(n, a)
{
	n = n.toString();
	for(var i = 0; i < a.length; i++)
		if(a[i].toString() == n) return i;
	return -1;
}

//---------------------------------------------------------


function showWaitBox(x, y)
{
	// alert("x: "+ x +"  y: "+ y);
	waitBox.css("left", x).css("top", y).show();
}

function hideWaitBox()
{
	$("#waitBox").hide();
}

function showMenuBox(x, y)
{
	$("body").unbind("click", hideMenuBox);
	$("body").bind("click", hideMenuBox);
	// нужно чтобы определить ширину
	// $("#popupBox").show().hide();

	$("#popupBox").css("left", x).css("top", y).show();
}

function hideMenuBox()
{
	$("#popupBox").hide();
	$("body").unbind("click", hideMenuBox);
}

